package file

import (
	"fmt"
	"io/ioutil"
	"os"
	"strings"
)

// _PathExistsAndIsDir 判断path是否存在。而且path文件类型与isDir一致，即isDir为true，只有是目录类型才会返回true
func _PathExistsAndIsDir(path string, isDir bool) bool {
	if fileInfo, err := os.Stat(path); os.IsNotExist(err) {
		return false
	} else {
		return isDir == fileInfo.IsDir()
	}
}

// FolderExists 检查目录是否存在
func FolderExists(path string) bool {
	return _PathExistsAndIsDir(path, true)
}

// FileExists 检查文件是否存在
func FileExists(path string) bool {
	return _PathExistsAndIsDir(path, false)
}

// ReadFileContent 读取文件内容，返回 []byte 数组，主要处理加密数据
func ReadFileContent(filename string) ([]byte, error) {
	//打开文件
	file, err := os.Open(filename)
	if err != nil {
		return nil, err
	}
	defer file.Close()

	//读取文件的内容
	info, err := file.Stat()
	if err != nil {
		return nil, err
	}
	buf := make([]byte, info.Size())
	file.Read(buf)
	return buf, nil
}

// GetFileContent 获取文件内容，主要处理原文数据
func GetFileContent(filename string) (lines []string, err error) {
	content, err := ioutil.ReadFile(filename)
	if err != nil {
		fmt.Println("[Error] Open file error: ", err)
		return nil, err // 直接返回错误即可
	}
	items := strings.Split(string(content), "\n")
	return items, err
}

// SaveFileContent 保存文件内容，会直接覆盖
func SaveFileContent(content, filename string) error {
	return ioutil.WriteFile(filename, []byte(content), 0666)
}
